import * as qiniu from "qiniu-js";   //上传七牛云sdk
import md5 from 'js-md5'
import fetch from './fetch'

let token,oss_endpoint;

/**
 * 
 * @param {File} file 上传至七牛云的文件
 * @param {Object} handles  上传中的回调函数，包括进行中，完成，错误
 */
function _upQiNiu(file,handles){
    /**
     * 上传至七牛云说明地址
     * https://developer.qiniu.com/kodo/sdk/1283/javascript
     */
    let key = md5(Date.now()+file.name) + file.name.slice(file.name.lastIndexOf('.'));
    let putExtra = {};
    let config = {
        useCdnDomain: true,
        region: qiniu.region.z0
    };
    var observable = qiniu.upload(file, key, token, putExtra, config);
    var subscription = observable.subscribe({
        // 上传进度
        next(res) {
            handles.next && typeof handles.next === 'function' && handles.next(res)
        },
        //  上传失败
        error(err) {
            handles.error && typeof handles.error === 'function' && handles.error(err)
        },
        //   上传成功
        complete(res) {
            // console.log(res);
            // 上传成功后完成的资源地址
            handles.complete && typeof handles.complete === 'function' && handles.complete(oss_endpoint + '/' + res.key);
        }
    }); // 上传开始
}

/**
 * 
 * @param {File} file 上传至七牛云的文件
 * @param {Object} handles  上传中的回调函数，包括进行中，完成，错误
 */
function uploadFile(file,handles){

    fetch.getJson('/self/app/order/getQiniuToken',(err,res) =>{
        if(err){

        }
        else{
            if(res.code == 1){
                token = res.data.upToken;
                oss_endpoint = res.data.oss_endpoint.replace(/\/$/,'') //去掉域名后面的斜杠
                _upQiNiu(file,handles);
            }
        }
    })

    
}

export default uploadFile